package cn.com.dcsgo.common.validation;

import jakarta.validation.Constraint;
import jakarta.validation.Payload;

import java.lang.annotation.*;

/**
 * 不为 null 和空白字符串时必须在指定字符串集合中
 * 校验不为空白字符串请用 NotBlank
 * 校验不为空白字符串但允许 null 请用 NotBlankIfNotNull
 *
 * @author Dcsgo
 * @since 24/5/2025 上午 10:02
 */
@Documented
@Constraint(validatedBy = StringInIfNotNullValidator.class)
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface StringInIfNotNull {
    String message() default "当前字符串不在指定的字符串集合中";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

    /**
     * 允许的字符串集合
     *
     * @return 允许的字符串集合
     */
    String[] value();
}
